package listbyorder.access001_100.test36;

import java.util.HashSet;
import java.util.Set;

/**
 * @author code_yc
 * @version 1.0
 * @date 2020/5/31 8:45
 */
public class Solution2 {

    // 方法二： 一次遍历求解的算法，使用Set构建不一样的字符串
    // 行中出现数字num(3),则加入字符串(num)row
    // 列中出现数组num,则加入字符串col(num)
    // 小棋盘出现数组num,则加入字符串 row / 3 (num) col / 3
    public boolean isValidSudoku(char[][] board) {
        Set<String> set = new HashSet<>();
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                if (board[i][j] != '.') {
                    String num = "(" + board[i][j] + ")";
                    if (!set.add(num + i) || !set.add(j + num) || !set.add(i / 3 + num + j / 3)) {
                        return false;
                    }
                }
            }
        }
        return true;
    }
}
